home *** CD-ROM | disk | FTP | other *** search
-
- PUBLIC DDIIL
-
- ASSUME CS:$DDIIL
-
- INCLUDE DOS.INC
-
- $DDIIL SEGMENT PARA PUBLIC 'CODE'
-
- COMMENT \
-
- PROCEDURE DDIIL (IX0,IY0,IX1,IY1 : integer; VISBLE : boolean);
- {
- (Incremental Line)
- Fill in the steps on the plot frame between the point (IX0,IY0) and
- (IX1,IY1), where IX0, IY0, IX1, and IY1 are in actual raster units for
- the device being used. If a vector plot device is to be used, this
- routine might instead simply transmit a single vector to a buffer.
-
- This version uses a symmetric DDA algorithm due to Van Throng (?).
- (25-JAN-84)
- }
- VAR
- AXIS, AXISX, AXISY, BIAS, DELX, DELY, DIAG, DIAGX, DIAGY, I, IX,
- IY, NDIST, NUMPNT, SX, SY : INTEGER;
-
- \
-
- ARGCNT EQU 5 ; Number of arguments
- IX0 EQU [BP] ; Define symbolic argument frame offsets
- IY0 EQU [BP-2]
- IX1 EQU [BP-4]
- IY1 EQU [BP-6]
- VISBLE EQU [BP-8]
- ; return address as CS:offset at [BP-10..13]
- ; old BP at [BP-14..15]
-
- DDIIL PROC FAR
- PUSH BP ; Save caller's frame pointer
- MOV BP,SP ; and set up our own.
- ADD BP,4+2*ARGCNT ; Point to top of arg list on stack
- MOV DX,VISBLE
- TEST DL,DL ; VISBLE = false?
- JZ DONE ; yes, nothing to draw
- MOV CX,IX0
- MOV DX,IY0
- MOV AH,$QS_VECTORMOVE
- INT $VIDEO
- MOV CX,IX1
- MOV DX,IY1
- MOV AH,81H ; Default color
- MOV AH,$QS_VECTORDRAW
- INT $VIDEO
- DONE: ; here when done
- POP BP ; restore caller's frame pointer
- RET 2*ARGCNT ; and return discarding stack arguments
- DDIIL ENDP
- $DDIIL ENDS
- END